package com.woniuxy.flowable.delegate;

import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;

@Slf4j
@Component("baoxiuServiceDelegate")
public class BaoxiuServiceDelegate implements JavaDelegate {

    @Override
    public void execute(DelegateExecution execution) {
        String processInstanceId = execution.getProcessInstanceId();
        String currentActivityId = execution.getCurrentActivityId();
        
        log.info("执行服务任务 - 流程实例ID: {}, 活动ID: {}", 
                processInstanceId, currentActivityId);
        
        // 根据不同的服务任务执行不同的业务逻辑
        switch (currentActivityId) {
            case "sid-2DEC2E80-1BA2-449E-B6E5-A57D778C6B8F":
                handleRejectOrder(execution);
                break;
            case "sid-91A57217-332C-4991-BA8E-C2B385C63E85":
                handleReplyAndEvaluate(execution);
                break;
            default:
                log.warn("未知的服务任务: {}", currentActivityId);
        }
    }
    
    /**
     * 处理报修订单驳回
     */
    private void handleRejectOrder(DelegateExecution execution) {
        log.info("处理报修订单驳回 - 流程实例ID: {}", execution.getProcessInstanceId());
        
        // 这里可以添加具体的业务逻辑，比如：
        // 1. 发送通知给业主
        // 2. 记录驳回原因
        // 3. 更新订单状态
        // 4. 发送短信或邮件通知
        
        log.info("报修订单已驳回处理完成");
    }
    
    /**
     * 处理回复业主和业主评价
     */
    private void handleReplyAndEvaluate(DelegateExecution execution) {
        log.info("处理回复业主和业主评价 - 流程实例ID: {}", execution.getProcessInstanceId());
        
        // 这里可以添加具体的业务逻辑，比如：
        // 1. 发送满意度调查
        // 2. 记录评价结果
        // 3. 更新维修记录
        // 4. 发送完成通知
        
        log.info("回复业主和业主评价处理完成");
    }
} 